home *** CD-ROM | disk | FTP | other *** search
/ Aminet 23 / Aminet 23 (1998)(GTI - Schatztruhe)[!][Feb 1998].iso / Aminet / dev / misc / gms_dev.lha / GMSDev / Source / Asm / Cards / DrawCardBuffered.s < prev   
Text File  |  1997-12-23  |  5KB  |  227 lines

  1. ;-------T-------T------------------------T----------------------------------;
  2. ;Draw Reko Cards
  3. ;---------------
  4. ;Loads a reko card file and draws a card to screen.  Push right mouse
  5. ;button to cycle through the available cards in the file.
  6.  
  7.     INCDIR    "INCLUDES:"
  8.     INCLUDE    "dpkernel/dpkernel.i"
  9.     INCLUDE    "graphics/cards.i"
  10.     INCLUDE    "system/modules.i"
  11.  
  12.     SECTION    "Demo",CODE
  13.  
  14. ;===========================================================================;
  15. ;                             INITIALISE DEMO
  16. ;===========================================================================;
  17.  
  18.     STARTDPK
  19.  
  20. Start:    MOVEM.L    A0-A6/D1-D7,-(SP)
  21.     move.l    DPKBase(pc),a6
  22.     lea    PictureFile(pc),a0
  23.     moveq    #ID_PICTURE,d0
  24.     CALL    Load
  25.     move.l    d0,Picture
  26.     beq    .Exit
  27.  
  28.     moveq    #ID_SCREEN,d0
  29.     CALL    Get
  30.     move.l    d0,Screen
  31.     beq    .Exit
  32.  
  33.     move.l    Picture(pc),a0
  34.     move.l    Screen(pc),a1
  35.     move.l    PIC_Bitmap(a0),a2
  36.     move.l    BMP_Data(a2),GS_MemPtr1(a1)
  37.     move.l    #DBLBUFFER,GS_Attrib(a1)
  38.     CALL    CopyStructure
  39.  
  40.     move.l    Screen(pc),a0
  41.     sub.l    a1,a1
  42.     CALL    Init
  43.     tst.l    d0
  44.     beq.s    .Exit
  45.  
  46.     move.l    BLTBase(pc),a6
  47.     moveq    #BUFFER1,d0
  48.     moveq    #BUFFER2,d1
  49.     CALL    bltCopyBuffer
  50.  
  51. ;---------------------------------------------------------------------------;
  52. ;Initialise the module and cardset.
  53.  
  54.     move.l    DPKBase(pc),a6
  55.     lea    CardModtags(pc),a0
  56.     sub.l    a1,a1
  57.     CALL    Init    ;>> = Initialise Cards Interface.
  58.     move.l    d0,CardModule
  59.     beq.s    .Exit
  60.     move.l    d0,a0    ;a0 = Card Module.
  61.     move.l    MOD_ModBase(a0),CardBase    ;ma = Store jump table.
  62.  
  63.     lea    CardsTag(pc),a0    ;a1 = CardSet.
  64.     move.l    Screen(pc),a1    ;a0 = Screen.
  65.     CALL    Init    ;>> = Initialise the card set.
  66.     tst.l    d0
  67.     beq.s    .Exit
  68.  
  69. ;---------------------------------------------------------------------------;
  70. ;Initialise the restorelist.
  71.  
  72.     lea    RestoreTags(pc),a0
  73.     move.l    Screen(pc),a1    ;a1 = Screen.
  74.     CALL    Init    ;>> = Initialise the restore list.
  75.     tst.l    d0    ;d0 = Check for errors.
  76.     beq.s    .Exit    ;>> = Error, exit.
  77.  
  78. ;---------------------------------------------------------------------------;
  79.  
  80.     moveq    #ID_JOYDATA,d0    ;Get joydata structure for reading
  81.     CALL    Get    ;joyports.
  82.     move.l    d0,JoyData
  83.     beq.s    .Exit
  84.     move.l    d0,a0    ;Initialise the joydata structure.
  85.     sub.l    a1,a1
  86.     CALL    Init
  87.     tst.l    d0
  88.     beq.s    .Exit
  89.  
  90. ;---------------------------------------------------------------------------;
  91.  
  92.     move.l    Screen(pc),a0
  93.         CALL    Display
  94.  
  95.     bsr.s    Main
  96.     
  97. ;---------------------------------------------------------------------------;
  98. ;                                 EXIT TO DOS
  99. ;---------------------------------------------------------------------------;
  100.  
  101. .Exit    move.l    DPKBase(pc),a6
  102.     move.l    JoyData(pc),a0
  103.     CALL    Free
  104.     move.l    Restore(pc),a0
  105.     CALL    Free
  106.     move.l    CardSet(pc),a0
  107.     CALL    Free
  108.     move.l    CardModule(pc),a0
  109.     CALL    Free
  110.     move.l    Screen(pc),a0
  111.     CALL    Free
  112.     move.l    Picture(pc),a0
  113.     CALL    Free
  114.     MOVEM.L    (SP)+,A0-A6/D1-D7
  115.     moveq    #ERR_OK,d0
  116.     rts
  117.  
  118. ;===========================================================================;
  119. ;                                  MAIN LOOP
  120. ;===========================================================================;
  121.  
  122. Main:
  123. .loop    move.l    DPKBase(pc),a6
  124.     move.l    Restore(pc),a0
  125.     CALL    Activate
  126.  
  127.     move.l    CardSet(pc),a0    ;a0 = Cardset.
  128.     CALL    Draw    ;>> = Draw the card.
  129.  
  130.     move.l    SCRBase(pc),a6
  131.     CALL    scrWaitVBL
  132.  
  133.     move.l    Screen(pc),a0
  134.     CALL    scrSwapBuffers
  135.  
  136.     move.l    DPKBase(pc),a6
  137.     tst.w    Counter
  138.     ble.s    .query
  139.     subq.w    #1,Counter
  140.  
  141. .query    move.l    JoyData(pc),a0
  142.     CALL    Query
  143.  
  144.     move.l    JoyData(pc),a0
  145.     move.l    CardSet(pc),a1
  146.     move.l    CS_Bob(a1),a1
  147.     move.w    JD_XChange(a0),d0
  148.     add.w    d0,BOB_XCoord(a1)
  149.     move.w    JD_YChange(a0),d0
  150.     add.w    d0,BOB_YCoord(a1)
  151.     move.l    JD_Buttons(a0),d0
  152.  
  153. .FlipCards
  154.     btst    #JB_RMB,d0
  155.     beq.s    .ChkLMB
  156.     tst.w    Counter
  157.     bgt.s    .ChkLMB
  158.  
  159.     move.w    #25,Counter
  160.     move.l    Cardset(pc),a1
  161.     addq.w    #1,CS_Card(a1)
  162.     move.w    CS_AmtCards(a1),d1
  163.     cmp.w    CS_Card(a1),d1
  164.     bgt.s    .ChkLMB
  165.     clr.w    CS_Card(a1)
  166.  
  167. .ChkLMB    move.l    JoyData(pc),a0
  168.     move.l    JD_Buttons(a0),d0
  169.     btst    #JB_LMB,d0
  170.     beq    .loop
  171.     rts
  172.  
  173. ;===========================================================================;
  174. ;                                  DATA
  175. ;===========================================================================;
  176.  
  177. Counter:    dc.w  0
  178.  
  179. CardBase:    dc.l  0
  180. JoyData:    dc.l  0
  181. Screen:        dc.l  0
  182.  
  183. ;---------------------------------------------------------------------------;
  184.  
  185. CardModTags:    dc.l  TAGS_MODULE
  186. CardModule:    dc.l  0
  187.         dc.l  MODA_Number,MOD_CARDS
  188.         dc.l  MODA_Version,Cards_ModVersion
  189.         dc.l  MODA_Revision,Cards_ModRevision
  190.         dc.l  TAGEND
  191.  
  192. ;---------------------------------------------------------------------------;
  193.  
  194. RestoreTags:    dc.l  TAGS_RESTORE
  195. Restore:    dc.l  0
  196.         dc.l  RSA_Entries,1
  197.         dc.l  TAGEND
  198.  
  199. ;---------------------------------------------------------------------------;
  200.  
  201. Picture:    dc.l  0
  202. PictureFile:    FILENAME "GMS:demos/data/background16.iff",0
  203.  
  204. ;---------------------------------------------------------------------------;
  205.  
  206. CardsTag:    dc.l  TAGS_CARDSET
  207. CardSet:    dc.l  0
  208.         dc.l  CSA_Attrib,BBF_CLIP|BBF_GENMASK|BBF_FILLMASK|BBF_RESTORE
  209.         dc.l  CSA_Source,.file
  210.         dc.l    CSA_BobTags,0
  211.         dc.l    BBA_XCoord,50
  212.         dc.l    BBA_YCoord,50
  213.         dc.l    TAGEND,0
  214.         dc.l  TAGEND
  215.  
  216. .file        FILENAME "GMS:demos/data/Hires16.reko",0
  217.  
  218. ;===========================================================================;
  219.  
  220. ProgName:    dc.b  "Draw Card",0
  221. ProgAuthor:    dc.b  "Paul Manias",0
  222. ProgDate:    dc.b  "December 1997",0
  223. ProgCopyright:    dc.b  "DreamWorld Productions (c) 1996-1997.  Freely distributable.",0
  224. ProgShort:    dc.b  "Simple card demonstration.",0
  225.         even
  226.  
  227.